package com.student.demo.util;

import cn.hutool.core.convert.Convert;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;

/**
 * 分页查询参数
 */
public class PageParam extends HashMap<String,Object> {
    /**
     * 当前第N页,页码，默认为1
     *
     * @return Integer
     */
    public Integer getPage() {
        return Convert.toInt(get("page"), 1);
    }

    /**
     * 设置页码
     *
     * @param page 大于0
     */
    public void setPage(Integer page) {
        this.put("page", page);
    }


    /**
     * 每页行数，默认大小为10
     *
     * @return Integer 默认10
     */
    public Integer getLimit() {
        return Convert.toInt(get("limit"), 10);
    }

    /**
     * 设置每页行数
     *
     * @param limit 大于0
     */
    public void setLimit(Integer limit) {
        this.put("limit", limit);
    }

    /**
     * 排序字段名称，默认 ""
     *
     * @return 非空String
     */
    public String getSort() {
        return Convert.toStr(get("sort"), "");
    }

    /**
     * 设置排序字段
     *
     * @param sort 字段名称
     */
    public void setSort(String sort) {
        this.put("sort", sort);
    }

    /**
     * 只返回两种情况,默认倒序
     *
     * @return desc | asc
     */
    public String getOrder() {
        String order = Convert.toStr(get("order"));
        if ("asc".equalsIgnoreCase(order)) {
            order = "asc";
        } else {
            order = "desc";
        }
        return order;
    }

    /**
     * 设置排序字段
     *
     * @param useAse 是否使用正序
     */
    public void setOrder(boolean useAse) {
        this.put("order", useAse ? "asc" : "desc");
    }


    /**
     * 通用的模糊查询条件
     *
     * @return String
     */
    public String getSearch() {
        return Convert.toStr(get("search"));
    }


    /**
     * 设置模糊查询条件
     *
     * @param search 字符串
     */
    public void setSearch(String search) {
        this.put("search", search);
    }

    /**
     * 自动添加%号
     *
     * @return String
     */
    public String getSearchLike() {
        String search = Convert.toStr(get("search"));
        if (StringUtils.isNotBlank(search)) {
            return "%" + search.trim() + "%";
        }
        return null;
    }
}
